export apple_sign_username="dev@u-nas.cn"
export apple_sign_password="htpo-eioa-intl-udsy"

# 列出系统中可用来签名的证书：
sign_list_certs() {
    security find-identity -v
}

# 签名code：支持.dylib,二进制文件，.app文件签名
sign_code() {
    if [ $# != 2 ]; then
        echo "#### 使用方法: sign_code 95BA2FA1E900469D250F175BB0835DDEA3EE7DA7 /Users/mac-dev/U-Backup/U-Backup/bin/sbin/u-backupclientbackend"
        return
    fi
    certid=$1
    packge_path=$2 # 支持二进制文件，pkg, app
    codesign --timestamp --options=runtime -f -s $certid $packge_path --deep --force --verify --verbose
}

# 签名pkg：只支持.pkg文件签名,identity对应的证书必须是Developer ID Installer类型
sign_pkg() {
    if [ $# != 2 ]; then
        echo "#### 使用方法: sign_pkg 95BA2FA1E900469D250F175BB0835DDEA3EE7DA7 /path/to/xxx.pkg"
        return
    fi
    certid=$1
    packge_path=$2
    productsign --sign $certid $packge_path tmp # pkg文件只能用 productsign签名，不能用 codesign签名
    mv tmp $packge_path
}

# 查看pkg签名信息：
sign_status_pkg() {
    if [ $# != 1 ]; then
        echo "#### 使用方法: sign_status_pkg /path/to/xxx.pkg"
        return
    fi
    pkg_path=$1
    pkgutil --check-signature $pkg_path
}

# 查看签名信息：
sign_show() {
    if [ $# != 1 ]; then
        echo "#### 使用方法: sign_show /Applications/U-Backup.app"
        return
    fi
    packge_path=$1
    codesign -d -vvvv $packge_path
}

sign_remove() {
    if [ $# != 1 ]; then
        echo "#### 使用方法: sign_remove /Applications/U-Backup.app"
        return
    fi
    packge_path=$1
    codesign --remove-signature $packge_path
}

# 验证签名：
sign_verfify() {
    if [ $# != 1 ]; then
        echo "#### 使用方法: sign_verfify /Applications/U-Backup.app"
        return
    fi
    packge_path=$1
    codesign --verify $packge_path
}

# 公正：支持对.zip、.pkg 和 .dmg进行公正
sign_notarize() {
    if [ $# != 2 ]; then
        echo "#### 使用方法: sign_notarize "com.unas.U-Backup" /path/to/xxx.pkg"
        return
    fi
    bundleID=$1
    filePath=$2
    xcrun altool --notarize-app --primary-bundle-id $bundleID --username $apple_sign_username --password $apple_sign_password --file $filePath
}

# 查询公正状态详情：
sign_notarize_status_detail() {
    if [ $# != 1 ]; then
        echo "#### 使用方法: sign_notarize_status_detail b7ca12e5-3833-4c73-a7c2-a46d6959523c"
        return
    fi
    RequestUUID=$1
    xcrun altool --username $apple_sign_username --password $apple_sign_password --notarization-info $RequestUUID
}

# 查询公正状态列表：
sign_notarize_status_list() {
    xcrun altool --notarization-history 0 --username $apple_sign_username --password $apple_sign_password
}
